#ast.Import
#直接导入

"""
Import(
    names=[
        alias(name='x'),
        alias(name='y'),
        alias(name='z')]),
Import(
    names=[
        alias(name='x', asname='a'),
        alias(name='y', asname='b')]),
"""
# 列表显示 第一列name 第二列asname


import ast

from PySide6.QtGui import QStandardItem, QStandardItemModel
from 程序核心代码.mvvm重构.基础定义.基础图形项.基础图形组件.节点基础图形项 import 带布局的节点基础图形项

from 程序核心代码.ast节点.节点定义.基础定义.ast节点基础定义 import ast节点基础模型
from 程序核心代码.mvvm重构.基础定义.基础图形项.基础图形组件.子组件.基础文本组件 import 对齐方式
from 程序核心代码.mvvm重构.基础定义.基础图形项.基础图形组件.子组件.表格组件 import 数据表格组件
from 程序核心代码.mvvm重构.基础定义.节点管理器.自动节点注册表 import 注册节点模型


@注册节点模型(ast.Import)
class 直接导入ast节点基础模型(ast节点基础模型):

    def 节点数据解析(self):
        self.导入字典= {}
        for 导入项 in self._ast节点.names:
            if 导入项.asname is None:
                self.导入字典[导入项.name]= None
            else:
                self.导入字典[导入项.name]= 导入项.asname
    def __init__(self, ast节点, 所属节点模型管理器, 上级节点=None, 节点位置=None):
        super().__init__(ast节点, 所属节点模型管理器, "直接导入ast节点基础模型", 节点位置=节点位置, 上级节点=上级节点)
        self.表格组件 = 数据表格组件(["模块名", "别名"],同步函数= self.数据同步函数)
        # 需要同步生成对应连接点
        self.图形项 = 直接导入节点图形项(self)
        模型=self._加载_字典(self.导入字典)
        self.表格组件.设置数据(模型)


    def 数据同步函数(self,行, 列, 内容):
        print(f"数据已同步 - 行: {行}, 列: {列}, 内容: {内容}")
        if 行==len(self._ast节点.names):
            self._ast节点.names.append(ast.alias(name=""))
        elif 行>len(self._ast节点.names):
            for i in range(行-len(self._ast节点.names)):
                self._ast节点.names.append(ast.alias(name=""))

        if 列 == 0:  #name
            self._ast节点.names[行].name = 内容
        elif 列 == 1:  #asname
            if 内容 == "":
                self._ast节点.names[行].asname = None
            else:
                self._ast节点.names[行].asname = 内容


    def _加载_字典(self, 数据):
        """加载字典数据"""
        模型 = QStandardItemModel()
        模型.setColumnCount(2)#几个列？
        模型.setRowCount(len(数据))
        模型.setHorizontalHeaderLabels(["模组", "别名"])
        for 行, (键, 值) in enumerate(数据.items()):
            模型.setItem(行, 0, QStandardItem(str(键)))
            模型.setItem(行, 1, QStandardItem(str(值)))
        return 模型
class 直接导入节点图形项(带布局的节点基础图形项):

    def __init__(self,节点定义, 父项=None):
        super().__init__( 节点定义, 父项)
        if hasattr(self, "节点参数名称组件"):
            self.节点参数名称组件.设置文本对齐方式(对齐方式.左对齐)
        if hasattr(self, "节点参数名称组件"):
            self.节点参数值组件.设置文本对齐方式(对齐方式.右对齐)
        self.参数区布局 .addItem(self.节点定义.表格组件)
        #起始接口.重新排列连接区()
        self.重新排列节点布局()

